﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LM.InterfacesFabricas.DTOs;
using LM.InterfacesFabricas.Utilidades;
using LM.Negocio.Objetos;

namespace LM.Repositorios.Conversores
{
    public class ConversorDeGaragem
    {
        public Garagem Converta(DtoGaragem dtoGaragem)
        {
            if (dtoGaragem != null)
            {
                var garagem = new Garagem();
                garagem.Nome = dtoGaragem.Nome;
                garagem.Cnpj = dtoGaragem.Cnpj;
                garagem.InscricaoMunicipal = dtoGaragem.InscricaoMunicipal;
                garagem.Endereco = ConversorDeObjetos.Copie<Endereco>(dtoGaragem.Endereco);
                garagem.Telefones = ConversorDeObjetos.Copie<Telefone, DtoTelefone>(dtoGaragem.Telefones.ToList());

                return garagem;
            }

            return null;
        }

        public DtoGaragem Converta(Garagem garagem)
        {
            if (garagem != null)
            {
                var dtoCliente = new DtoGaragem();
                dtoCliente.Nome = garagem.Nome;
                dtoCliente.Cnpj = garagem.Cnpj;
                dtoCliente.InscricaoMunicipal = garagem.InscricaoMunicipal;
                dtoCliente.Endereco = ConversorDeObjetos.Copie<DtoEndereco>(garagem.Endereco);

                if (garagem.Telefones != null)
                {
                    dtoCliente.Telefones = ConversorDeObjetos.Copie<DtoTelefone, Telefone>(garagem.Telefones.ToList());
                }
                return dtoCliente;
            }
            return null;
        }

        public IList<DtoGaragem> ConvertaLista(IList<Garagem> garagens)
        {
            var dtoGaragens = new List<DtoGaragem>();

            foreach (var garagem in garagens)
            {
                dtoGaragens.Add(Converta(garagem));
            }

            return dtoGaragens;
        }
    }
}
